package com.shm.didi;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 施展魔法
 * 时间限制： 3000MS
 * 内存限制： 589824KB
 * 题目描述：
 * 小A的家门口有一排树，每棵树都有一个正整数的高度。由于树的高度不同，来到小A家的朋友都觉得很难看。为了将这些树高度变得好看，小A决定对其中某些树施展魔法，具体来说，每施展一次魔法，可以把一棵树的高度变成任意正整数（可以变高也可以变低）。
 *
 * 小A认为，这排树如果能构成等差为x的等差数列就好看了。但是小A不想施展太多次魔法，他想知道最少施展魔法的次数。
 *
 * 形式上来说，小A家门口一共有n棵树，第i棵树高度为ai。小A最后的目标为对于任意2≤i≤n，ai-ai-1=x
 *
 *
 *
 * 输入描述
 * 输入第一行包含两个正整数，n和x，含义如题面所示。
 *
 * 输入第二行包含n个正整数，第i个数的含义为第i棵树的高度ai
 *
 *
 * 范围：n≤105,1≤ai≤105，x≤1000
 *
 * 输出描述
 * 输出包含一个正整数，即小A最少施展魔法的次数
 *
 *
 * 样例输入
 * 5 2
 * 1 3 1 3 5
 * 样例输出
 * 3
 *
 * 提示
 * 对3,4,5号树施法，最后变为1,3,5,7,9
 * @author SHM
 */
public class Main_2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] ss = s.split(" ");
        int n=Integer.parseInt(ss[0]);
        int x=Integer.parseInt(ss[1]);
        String sn = scanner.nextLine();
        String[] sns = sn.split(" ");
        int[] put = new int[n];
        for (int i = 0; i < n; i++) {
            put[i]=Integer.parseInt(sns[i]);
        }
        int[] c = new int[n];
        List<Integer> list = new ArrayList<>();
        for (int i = 1; i < n; i++) {
            c[i]=put[i]-put[i-1];
            if(c[i]==x){
                list.add(i);
            }
        }
        int ans=0;
        int size = list.size();
        if(size==0){
            for (int i = 1; i < n; i++) {
                if(c[i]!=x){
                    ans++;
                    put[i]=put[i-1]+x;
                    c[i]=x;
                    if(i<n-1) {
                        c[i + 1] =put[i+1]-put[i];
                    }
                }
            }
        }else {
            int k = 0;
            for (int i = 1; i < size; i++) {
                if (list.get(i) - list.get(i - 1) == 1) {
                    k++;
                }
            }
            if (k == size - 1) {
                int l = list.get(0);
                int r = list.get(size - 1);
                for (int i = l-2; i >= 0; i--) {
                    if(put[i+1]-put[i]!=x){
                        ans++;
                        put[i]=put[i+1]-x;
                    }
                }
                for (int i = r+1; i < n; i++) {
                    if(c[i]!=x){
                        ans++;
                        put[i]=put[i-1]+x;
                        c[i]=x;
                        if(i<n-1) {
                            c[i + 1] =put[i+1]-put[i];
                        }
                    }
                }
            }else{
                ans=Integer.MAX_VALUE;
                //
                for (int j = 0; j < size; j++) {
                    int[] pp = new int[n];
                    System.arraycopy(put, 0, pp, 0, n);
                    int[] cc= new int[n];
                    System.arraycopy(c, 0, cc, 0, n);
                    int p= count(list,pp,cc,j,x,n,ans);
                    ans=Math.min(p,ans);
                }
            }
        }

        System.out.println(ans);
    }

    static int count(List<Integer> list,int[] put,int[] c,int j,int x,int n,int ans){
        int p=0;
        int l = list.get(j);
        for (int i = l-2; i >= 0 ; i--) {
            if (put[i+1]-put[i] != x) {
                p++;
                put[i] = put[i + 1] - x;
            }
        }
        for (int i = l + 1; i < n; i++) {
            if (c[i] != x) {
                p++;
                if(p>ans){
                    break;
                }
                put[i] = put[i - 1] + x;
                c[i] = x;
                if (i < n - 1) {
                    c[i + 1] = put[i + 1] - put[i];
                }
            }
        }
        return p;
    }


    public static void main_2(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] ss = s.split(" ");
        int n=Integer.parseInt(ss[0]);
        int x=Integer.parseInt(ss[1]);
        String sn = scanner.nextLine();
        String[] sns = sn.split(" ");
        int[] put = new int[n];
        for (int i = 0; i < n; i++) {
            put[i]=Integer.parseInt(sns[i]);
        }
        int[] c = new int[n];
        for (int i = 1; i < n; i++) {
            c[i]=put[i]-put[i-1];
        }
        int ans=0;
        for (int i = 1; i < n; i++) {
            if(c[i]!=x){
                ans++;
                put[i]=put[i-1]+x;
                c[i]=x;
                if(i<n-1) {
                    c[i + 1] =put[i+1]-put[i];
                }
            }
        }

        System.out.println(ans);
    }
}
